/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.going.vista;

import co.com.going.logica.ILogicaPais;
import co.com.going.modelo.Pais;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author Olguita
 */
@ManagedBean (name = "VistaPais")
@RequestScoped
public class VistaPais {

     @EJB
    private ILogicaPais iLogicaPais;
    
    
    
    
    private InputText txtCodPais;
    private InputText txtNombrePais;
    private List<Pais> listaPaises;
    private Pais paisSeleccionado;
    private CommandButton btnRegistrar;
    private CommandButton btnModificar;
    private CommandButton btnEliminar;
    private CommandButton btnLimpiar;
    
    
    
    public VistaPais() {
    }

    public ILogicaPais getiLogicaPais() {
        return iLogicaPais;
    }

    public InputText getTxtCodPais() {
        return txtCodPais;
    }

    public void setTxtCodPais(InputText txtCodPais) {
        this.txtCodPais = txtCodPais;
    }

    public InputText getTxtNombrePais() {
        return txtNombrePais;
    }

    public void setTxtNombrePais(InputText txtNombrePais) {
        this.txtNombrePais = txtNombrePais;
    }

    public List<Pais> getListaPaises() {
        
        try {
            listaPaises= iLogicaPais.paises();
            
            } catch (Exception ex) {
            Logger.getLogger(VistaPais.class.getName()).log(Level.SEVERE, null, ex);
        }
         return listaPaises;
    }

    public void setListaPaises(List<Pais> listaPaises) {
        this.listaPaises = listaPaises;
    }

    public Pais getPaisSeleccionado() {
        return paisSeleccionado;
    }

    public void setPaisSeleccionado(Pais paisSeleccionado) {
        this.paisSeleccionado = paisSeleccionado;
    }

    public CommandButton getBtnRegistrar() {
        return btnRegistrar;
    }

    public void setBtnRegistrar(CommandButton btnRegistrar) {
        this.btnRegistrar = btnRegistrar;
    }

    public CommandButton getBtnModificar() {
        return btnModificar;
    }

    public void setBtnModificar(CommandButton btnModificar) {
        this.btnModificar = btnModificar;
    }

    public CommandButton getBtnEliminar() {
        return btnEliminar;
    }

    public void setBtnEliminar(CommandButton btnEliminar) {
        this.btnEliminar = btnEliminar;
    }

    public CommandButton getBtnLimpiar() {
        return btnLimpiar;
    }

    public void setBtnLimpiar(CommandButton btnLimpiar) {
        this.btnLimpiar = btnLimpiar;
    }

    
    public void seleccionar_Pais(SelectEvent event){
        
        Pais pais= (Pais) event.getObject();
        txtCodPais.setValue(pais.getCodPais());
        txtNombrePais.setValue(pais.getNombrePais());
        txtCodPais.setDisabled(true);
        btnEliminar.setDisabled(false);
        btnLimpiar.setDisabled(false);
        btnRegistrar.setDisabled(true);
        btnModificar.setDisabled(false);
        
        
    }
    
    
    public void funcion_Registrar(){
        
            try {
                Pais pais=new Pais();
                pais.setCodPais(Long.parseLong(txtCodPais.getValue().toString().trim()));
                pais.setNombrePais(txtNombrePais.getValue().toString().trim().toUpperCase());
                iLogicaPais.crearPais(pais);
                FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage("El Pais Creado con Exito"));
                funcion_Limpiar();

            } catch (Exception ex) {
                Logger.getLogger(VistaPais.class.getName()).log(Level.SEVERE, null, ex);
                FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(ex.getMessage()));
            }

        }
    
    public void funcion_Modificar(){
        
        try {
                Pais pais=new Pais();
                pais.setCodPais(Long.parseLong(txtCodPais.getValue().toString().trim()));
                pais.setNombrePais(txtNombrePais.getValue().toString().trim().toUpperCase());
                iLogicaPais.modificarPais(pais);
                FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage("El Pais Modificado con Exito"));
                funcion_Limpiar();

            } catch (Exception ex) {
                Logger.getLogger(VistaPais.class.getName()).log(Level.SEVERE, null, ex);
                FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(ex.getMessage()));
            }
        
    }
    
    public void funcion_Eliminar(){
        
         try {
             Pais pais= iLogicaPais.buscarPaisPorId(Long.parseLong(txtCodPais.getValue().toString()));
             System.out.println("PAIS"+pais.getNombrePais());
             iLogicaPais.eliminarPais(pais);
             FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage("El Pais Fue Eliminado con Exito"));
             funcion_Limpiar();
         } catch (Exception ex) {
             Logger.getLogger(VistaPais.class.getName()).log(Level.SEVERE, null, ex);
             FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(ex.getMessage()));
         }
        
    }
    
    public void funcion_Limpiar(){
        
        txtCodPais.setValue("");
        txtNombrePais.setValue("");
        btnEliminar.setDisabled(true);
        btnRegistrar.setDisabled(false);
        btnModificar.setDisabled(true);
        txtCodPais.setDisabled(false);
        btnLimpiar.setDisabled(false);
        
        
    }
    
}
